
// 这是陈新泽提供的继承方法,
// 使用inheritPrototype函数实现类的继承
function object(o)
{
	function F(){}
	F.prototype = o;
	return new F();
}

function inheritPrototype(subType, superType)
{
	var prototype = object(superType.prototype);
	prototype.constructor = subType;
	subType.prototype = prototype;
}
// 用法:
// inheritPrototype(SubType, SuperType);

// Array的插入方法
Array.prototype.insertAt = function( index, value ) 
{
    var _this = this;
	var part1 = _this.slice( 0, index );
	var part2 = _this.slice( index );
	part1.push( value );
	return( part1.concat( part2 ) );
};

Array.prototype.removeAt = function( index )
{
    var _this = this;
	var part1 = _this.slice( 0, index );
	var part2 = _this.slice( index );
	part1.pop();
	return( part1.concat( part2 ) );
}



// 坐标类
// 基础类  用于物理计算和物体坐标指示
// --------------------------------------------------------------
// --------------------------------------------------------------
// 坐标类
// 基础类  用于物理计算和物体坐标指示
function Vector2(X,Y) 
{
	var _this = this;
	_this.x = X;
	_this.y = Y;
	//数乘
	_this.numProduct = function(V)
	{
	    return new Vector2(_this.x *V, _this.y * V);
	}
	//点乘
	_this.dotProduct = function(V) 
	{
		// 返回一个新值~~~
		return new Vector2(_this.x * V.x, _this.y * V.y);			
	}
	//叉乘
	_this.crossProduct = function(V)
     {
		return _this.x * V.y - _this.y * V.x;
	}
}

// 矩形类, 基础类 用于物理碰撞检测和物体的定位
function Rectangle(W,H)
{
    var _this = this;
	_this.width = W;
	_this.height = H;	
}



